home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Languguage OS 2
/
Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO
/
language
/
arjuna
/
index
< prev
next >
Wrap
Text File
|
1994-10-23
|
28KB
|
644 lines
Implementing Fault-Tolerant Distributed Applications Using Objects and
Multi-Coloured Actions
Santosh K Shrivastava and Stuart M Wheater
Abstract
This paper develops some control structures suitable for composing
fault-tolerant distributed applications using atomic actions (atomic
transactions) as building blocks, and then goes on to describe how such
structures may be implemented using the concept of multi-coloured
actions. We first identify the reasons why other control structures in
addition to - by now well known - nested and concurrent atomic actions
are desirable and then propose three new structures: serializing
actions, glued actions and top-level independent actions. A number of
examples are used to illustrate their usefulness. A novel technique,
based on the concept of multi-coloured actions, is then presented as a
uniform basis for implementing all of the three action structures
presented here.
Location: /pub/Arjuna/Papers/Multi-Coloured-Actions_EuropeA4.ps.Z
/pub/Arjuna/Papers/Multi-Coloured-Actions_USLetter.ps.Z
---------------------------------------------------------------------
An Overview of the Arjuna Distributed Programming System
Santosh K Shrivastava, Graeme N Dixon and Graham D Parrington
Abstract
Arjuna is an object-oriented programming system which provides a set of
tools for constructing fault-tolerant distributed applications. Arjuna
supports nested atomic actions (nested atomic transactions) for
structuring programs. Programs invoke operations on objects which are
instances of abstract data types. In Arjuna, objects are long lived
entities (persistent) and are the main repositories for holding system
state. By ensuring that objects are only manipulated within an atomic
action, it can be guaranteed that the integrity of objects (and hence
the integrity of the system) is maintained in the presence of failures
such as node crashes and the loss of network messages. A number of
mechanisms are required to achieve fault tolerance and to provide
distribution. This paper gives an overview of these mechanisms, which
have been implemented in the language C++, and describes how they
support the object model of computation employed by Arjuna.
Location: /pub/Arjuna/Papers/Overview-Of-Arjuna_EuropeA4.ps.Z
/pub/Arjuna/Papers/Overview-Of-Arjuna_USLetter.ps.Z
---------------------------------------------------------------------
Exploiting Type Inheritance Facilities to Implement Recoverability in
Object Based Systems
G.N. Dixon and S.K. Shrivastava
Abstract
One of the key concepts available in many object based programming
languages is that of type inheritance, permitting new object types to
be refined out of existing object types. This paper discusses how this
concept can be exploited for introducing recoverability into a system.
A multilevel object based recovery model is employed, permitting
recoverable objects to be constructed out of recoverable and
unrecoverable objects. Simple examples are used to illustrate the
ideas and to demonstrate the suitability of the proposed approach.
Location: /pub/Arjuna/Papers/Type-Inheritence_EuropeA4.ps.Z
/pub/Arjuna/Papers/Type-Inheritence_USLetter.ps.Z
---------------------------------------------------------------------
Implementing Concurrency Control in Reliable Distributed
Object-Oriented Systems
Graham D. Parrington and Santosh K. Shrivastava
Abstract
One of the key concepts available in many object-oriented programming
languages is that of type-inheritance, which permits new types to be
derived from, and inherit the capabilities of, old types. This paper
describes how to exploit this property in a very simple fashion to
implement object-oriented concurrency control. We show how by using
type-inheritance, objects may control their own level of concurrency in
a type-specific manner. Simple examples demonstrate the applicability
of the approach. The implementation technique described here is being
used to develop Arjuna, a fault-tolerant distributed programming system
supporting atomic actions.
Location: /pub/Arjuna/Papers/Concurrency-Control_EuropeA4.ps.Z
/pub/Arjuna/Papers/Concurrency-Control_USLetter.ps.Z
---------------------------------------------------------------------
The Treatment of Persistent Objects in Arjuna
Graeme N. Dixon, Graham D. Parrington, Santosh K. Shrivastava and
Stuart M. Wheater
Abstract
Arjuna is a programming system which provides a set of tools for
constructing fault-tolerant distributed applications. It supports an
object-oriented model of computation in which atomic actions (atomic
transactions) control sequences of operations invoked upon persistent
objects. Persistent objects outlive the applications that create them
and this paper concentrates on the mechanisms within Arjuna that are
concerned with their management. The paper describes how these
mechanisms are related to the other Arjuna mechanisms required by
atomic actions for the distribution, concurrency control, recovery and
commitment of persistent objects.
Location: /pub/Arjuna/Papers/Treatment_of_Persistence_EuropeA4.ps.Z
/pub/Arjuna/Papers/Treatment_of_Persistence_USLetter.ps.Z
---------------------------------------------------------------------
Replicated K-Resilient Objects in Arjuna
Mark C Little and Santosh K Shrivastava
Abstract
This paper describes the design of an object replication scheme for the
Arjuna distributed system. The design supports K-resiliency, where, in
the absence of network partitions, K out of a total of K+1 replica
failures can be tolerated before an object becomes unavailable. The
scheme chosen employs active replication where each and every
functioning replica of an object carries out processing. Computations
are structured as atomic actions (atomic transactions). The paper
presents the details of how object groups are created and terminated,
how a group can be invoked and object replicas inserted and removed in
a consistent manner in the presence of node failures.
Location: /pub/Arjuna/Papers/Replicated-Objects_EuropeA4.ps.Z
/pub/Arjuna/Papers/Replicated-Objects_USLetter.ps.Z
---------------------------------------------------------------------
Maintaining Information about Persistent Replicated Objects in a
Distributed System
M.C. Little, D.L. McCue and S.K. Shrivastava
Abstract
The paper presents a general model for persistent replicated object
management and identifies what meta information about objects needs to
be maintained by a naming and binding service to ensure that objects
named by application programs are bound to only those object replicas
which are in a mutually consistent state. These ideas are developed
within the framework of a distributed system in which application
programs are composed of atomic actions (atomic transactions)
manipulating persistent (long-lived) objects.
Location: /pub/Arjuna/Papers/NamingAndBinding_EuropeA4.ps.Z
/pub/Arjuna/Papers/NamingAndBinding_USLetter.ps.Z
---------------------------------------------------------------------
Computing Replica Placement in Distributed Systems
Daniel McCue and Mark Little
Abstract
We have been investigating the design of a replica management system
(RMS) which allows a programmer to specify the quality of service
required for individual replicated objects in terms of availability and
performance. From the quality of service specification, information
about the replication protocol to be used, and data about the
characteristics of the underlying distributed system, the RMS computes
an initial placement and replication level for the replicated object.
As machines and communications systems are detected to have failed or
recovered, the RMS can be re-invoked to compute an updated mapping of
replicas which preserves the desired quality of service.
Location: /pub/Arjuna/Papers/ReplicaPlacement_EuropeA4.ps.Z
/pub/Arjuna/Papers/ReplicaPlacement_USLetter.ps.Z
---------------------------------------------------------------------
Understanding Component Failures and Replication in Distributed Systems.
S. K. Shrivastava, P. Ezhilchelvan and M. Little
Abstract
Faults are causes of system failures. The function of a fault-tolerant
algorithm of a system is to attempt to tolerate the failures of the
system's components so that the system can continue to provide
specified system services. The design of such an algorithm for any
given system function requires making fault models of components so
that the assumed behaviour of faulty components can be stated
precisely. We present a fault and failure classification for components
using expected value and timeliness as the two properties of a
component's response. This classification helps the development of
fault models of components and also the design of fault-tolerant
algorithms capable of tolerating faults - from relatively restricted
ones to increasingly more general ones. We show how the fault
classification can be extended to apply to replicated systems.
Location: /pub/Arjuna/Papers/ISA-Report_EuropeA4.tar.Z
/pub/Arjuna/Papers/ISA-Report_USLetter.tar.Z
---------------------------------------------------------------------
Structuring Persistent Object Systems for Portability in a Distributed
Environment
Daniel L. McCue
Santosh K. Shrivastava
Abstract
The object-oriented approach to system structuring has found widespread
acceptance among designers and implementers of robust distributed
information processing systems. In such systems, state information is
held within objects which may reside in object stores. Furthermore, if
any changes to the state of the system are performed under the control
of atomic actions (atomic transactions), then it can be ensured that no
inconsistencies are introduced despite applications making conflicting
accesses to objects and the occurrence of common failures (such as node
crashes). Previous attempts to design a portable applications
programming environment have focussed on heterogeneous RPC facilities
and common run-time environments. Where portable RPC and common
run-time efforts have already provided some level of access and
location transparency, we have raised the level of portable,
object-oriented applications development to include persistence,
concurrency control, recoverability, replication and migration of
objects. In this paper we look at distributed programming systems
supporting persistent objects and examine key portability features such
a system should possess. Major system components and their interfaces
are identified. An existing system is examined to verify the
feasability of the proposed architecture.
Location: /pub/Arjuna/Papers/Structuring-For-Portability_EuropeA4.ps.Z
/pub/Arjuna/Papers/Structuring-For-Portability_USLetter.ps.Z
---------------------------------------------------------------------
Structuring Fault-Tolerant Object Systems for Modularity in a
Distributed Environment
Santosh K. Shrivastava and Daniel L. McCue
Abstract
The object-oriented approach to system structuring has found widespread
acceptance among designers and developers of robust computing systems.
In this paper we propose a system structure for distributed programming
systems that support persistent objects and describe how such
properties as persistence, recoverability etc. can be implemented. The
proposed structure is modular, permitting easy exploitation of any
distributed computing facilities provided by the underlying system. An
existing system constructed according to the principles espoused here
is examined to illustrate the practical utility of the proposed
approach to system structuring.
Location: /pub/Arjuna/Papers/Modularity_EuropeA4.ps.Z
/pub/Arjuna/Papers/Modularity_USLetter.ps.Z
Technical Report Number 414 (February 1993)
---------------------------------------------------------------------
Programming Distributed Applications Transparently in C++: Myth or
Reality?
Graham D. Parrington
Abstract
Modern computing and networking hardware make the physical
interconnection of many machines simple. However, programming an
application to take even limited advantage of the interconnection is
notoriously difficult due to the complexity of the protocols involved.
Furthermore, real world demands insist that such applications need to
be programmed in an existing, preferably widely available, language.
One approach aimed at easing this difficulty is based upon the concept
of transparency. By making the underlying distribution of the system
transparent to the programmer it is hoped that the programming task
becomes comparable with that of programming centralised applications.
This paper describes mechanisms and tools that enable the various
facets of transparency can be accomplished for the language C++ noting
what level of transparency can be realistically attained.
Location: /pub/Arjuna/Papers/OpenForum92.ps.Z
---------------------------------------------------------------------
Reliable Distributed Programming in C++: The Arjuna Approach
Graham D. Parrington
Abstract
Programming in a distributed system is fraught with potential
difficulties caused, in part, by the physical distribution of the
system itself. By making the distribution of the system transparent it
is hoped that the task becomes comparable with that of programming a
more traditional centralised system. Object-oriented programming
systems are natural starting points for such an attempt due to the
inherent modularisation and encapsulation properties they possess.
Arjuna is one such system, programmed in C++, which permits the
construction of reliable distributed applications in a relatively
transparent manner.
Objects in Arjuna can be located anywhere in the distributed
system and are accessed as if they were purely local to the
application. The use of remote procedure calls to perform the actual
accesses is hidden by the use of stub generation techniques which
operate on the original C++ class descriptions thus furthering the
illusion of transparency. Reliability is achieved through the
provision of traditional atomic transaction mechanisms implemented
using only standard language features.
Location: /pub/Arjuna/Papers/UsenixC++90.ps.Z
---------------------------------------------------------------------
Configuring Distributed Applications using Object Decomposition in an
Atomic Action Environment
Stuart M. Wheater and Daniel L. McCue
Abstract
A common technique for constructing reliable distributed applications
is to use atomic actions for controlling operations on persistent
objects. Atomic actions are used to ensure that inconsistencies in
application state do not arise when failures occur or when concurrent
activities operate on shared objects. Within such an application,
objects provide a convenient unit for distribution and
concurrency-control. The properties of atomic actions and objects can
be exploited together to configure distributed applications, without
affecting the correct functioning of the application. This leads to
the possibility of changing the configuration of concurrency and
distribution of the distributed application to improve availability and
performance. These changes in concurrency and distribution can be
achieved by varying the object decomposition within the application.
In this paper, we show how some kinds of re-configuration can be
achieved without any modification to client applications. The
observations are
Location: /pub/Arjuna/Papers/Reconfiguration_EuropeA4.ps.Z
/pub/Arjuna/Papers/Reconfiguration_USLetter.ps.Z
---------------------------------------------------------------------
Object Replication in Arjuna
Mark C Little and Santosh K Shrivastava
DRAFT: August 1993
Abstract
Arjuna is a fault tolerant distributed system supporting nested atomic
actions (nested atomic transactions) that are used for controlling
operations on objects (instances of C++ classes). Objects are long
lived entities (persistent) and are the main repositories for holding
system state; they are also the units of replication for increasing
availability. This paper describes the design and implementation of two
object replication schemes for Arjuna. Support for replication is
provided by a naming and binding service for persistent replicated
objects that ensures that applications only ever get to use mutually
consistent copies of replicas.
Location: /pub/Arjuna/Papers/ObjectReplication_EuropeA4.ps.Z
/pub/Arjuna/Papers/ObjectReplication_USLetter.ps.Z
---------------------------------------------------------------------
The Replica Management System: a Scheme for Flexible and Dynamic
Replication
M. C. Little and D. L. McCue
Abstract
The actual gains achieved by replication are a complex function of the
number of replicas, the placement of those replicas, the replication
protocol, the nature of the transactions performed on the replicas, and
the availability and performance characteristics of the machines and
networks composing the system. This paper describes the design and
implementation of the Replica Management System, which allows a
programmer to specify the quality of service required for replica
groups in terms of availability and performance. From the quality of
service specification, information about the replication protocol to be
used, and data about the characteristics of the underlying distributed
system, the RMS computes an initial placement and replication level. As
machines and communications systems are detected to have failed or
recovered, or performance characteristics change, the RMS can be
re-invoked to compute an updated mapping of replicas which preserves
the desired quality of service. The result is a flexible, dynamic and
dependable replication system.
Location: /pub/Arjuna/Papers/ReplicaManagement_EuropeA4.ps.Z
/pub/Arjuna/Papers/ReplicaManagement_USLetter.ps.Z
---------------------------------------------------------------------
Exercising Application Specific Run-time Control Over Clustering of
Objects
Stuart M Wheater and Santosh Shrivastava
Abstract
Support for dynamic reconfiguration permitting changes to the
structure of an application while it is in operation is becoming more
and more important for distributed applications. One use of such a
reconfiguration facility would be to dynamically change the structure
of an application in order to improve its performance. In this paper
we describe the design and implementation of a dynamic performance
improvement scheme that is based on controlling clustering of
persistent objects. Our scheme provides a means of dynamically
reconfiguring storage structures of application objects, from no
clustering (all objects treated as independent), to maximum clustering
(all objects grouped together), including any intermediate level of
clustering, to suit a given pattern of usage.
Location: /pub/Arjuna/Papers/ObjectClustering_EuropeA4.ps.Z
/pub/Arjuna/Papers/ObjectClustering_USLetter.ps.Z
---------------------------------------------------------------------
Stabilis: A Case Study in Writing Fault-Tolerant Distributed
Applications Using Persistent Objects
L.E.Buzato and A.Calsavara
Abstract
This paper presents Stabilis, a fault-tolerant object-oriented
distributed database management system that has been written as an
exercise in persistent programming. Stabilis is implemented on top of
Arjuna, an object-oriented programming system that provides the basic
mechanisms for fault tolerance and distribution. The computational
model used by Arjuna is based upon the concept of using atomic actions
to control operations upon persistent objects. Stabilis aims at
experimenting with Arjuna to build large applications that use
persistent objects. Such experiment has led us to extend some of the
mechanisms for persistent programming already existent in Arjuna.
Stabilis manages objects that are persistent, recoverable and can be
accessed remotely and concurrently in a consistent manner. Objects
with such properties have an important function in the overall
operation of Stabilis. The database manager can be operated either
through a visual database interface or a query interpreter; both
translate commands into a series of operations of the database
manager. All operations of the database manager make use of atomic
actions and locks to structure and control accesses to objects. A
flexible use of nested atomic actions permits objects to retrogress to
previous consistent states. Stabilis has been developed using C++;
dispensing with the use of any specifically designed language for
persistent programming.
Location: /pub/Arjuna/Papers/Stabilis_EuropeA4.ps.Z
/pub/Arjuna/Papers/Stabilis_USLetter.ps.Z
---------------------------------------------------------------------
Objects and Actions in Reliable Distributed Systems
S.K. Shrivastava, G.N. Dixon, and G.D. Parrington
Abstract
This paper describes a method for constructing robust distributed
programs. The method is based upon the provision of atomic actions that
operate upon objects (instances of abstract data types). We begin by
constructing robust non-distributed programs using the atomic action
mechanism and then proceed to show how robust distributed programs can
be constructed in a similar fashion.Finally we briefly examine other
prototype distributed systems and examine their approach to the
reliability problem.
This paper is a revised and extended version of Chapter 6, "Robust
Distributed Programs" taken from the book "Resilient Computing
Systems", ed. T. Anderson, Collins, 1985.
Location: /pub/Arjuna/Papers/ObjectsAndActions_EuropeA4.ps.Z
/pub/Arjuna/Papers/ObjectsAndActions_USLetter.ps.Z
---------------------------------------------------------------------
Constructing Reliable Distributed Applications Using Actions And
Objects
Stuart M. Wheater
Abstract
A computation model for distributed systems which has found widespread
acceptance is that of atomic actions (atomic transactions) controlling
operations on persistent objects. Much current research work is
oriented towards the design and implementation of distributed systems
supporting such an object and action model. However, little work has
been done to investigate the suitability of such a model for building
reliable distributed systems. Atomic actions have many properties which
are desirable when constructing reliable distributed applications, but
these same properties can also prove to be obstructive.
This thesis examines the suitability of atomic actions for building
reliable distributed applications. Several new structuring techniques
are proposed, providing more flexibility than hitherto possible for
building a large class of applications. The proposed new structuring
techniques are: Serialising Actions, Top-Level Independent Actions,
N-Level Independent Actions, Common Actions and Glued Actions.
A new generic form of action is also proposed, the Coloured Action,
which provides more control over concurrency and recovery than
traditional actions. It will be shown that Coloured Actions provide a
uniform mechanism for implementing most of the new structuring
techniques, and at the same time are no harder to implement than normal
actions. Thus this proposal is of practical importance.
The suitability of the new structuring techniques will be demonstrated
by considering a number of applications. It will be shown that the
proposed techniques provide natural tools for composing distributed
applications.
Location: /pub/Arjuna/Theses/TR-316-6-90_EuropeA4.tar.Z
/pub/Arjuna/Theses/TR-316-6-90_USLetter.tar.Z
---------------------------------------------------------------------
Object Replication in a Distributed System
Mark C. Little
Abstract
A number of techniques have been proposed for the construction of
fault-tolerant applications. One of these techniques is to replicate
vital system resources so that if one copy fails sufficient copies may
still remain operational to allow the application to continue to
function. Interactions with replicated resources are inherently more
complex than non-replicated interactions, and hence some form of
replication transparency is necessary. This may be achieved by
employing replica consistency protocols to mask replica failures and
maintain consistency of state between functioning replicas.
To achieve consistency between replicas it is necessary to ensure that
all replicas receive the same set of messages in the same order,
despite failures at the senders and receivers. This can be accomplished
by making use of order preserving reliable communication protocols.
However, we shall show how it can be more efficient to use unordered
reliable communication and to impose ordering at the application level,
by making use of syntactic knowledge of the application.
This thesis develops techniques for replicating objects: in general
this is harder than replicating data, as objects (which can contain
data) can contain calls on other objects. Handling replicated objects
is essentially the same as handling replicated computations, and
presents more problems than simply replicating data. We shall use the
concept of the object to provide transparent replication to users: a
user will interact with only a single object interface which hides the
fact that the object is actually replicated.
The main aspects of the replication scheme presented in this thesis
have been fully implemented and tested. This includes the design and
implementation of a replicated object invocation protocol and the
algorithms which ensure that (replicated) atomic actions can manipulate
replicated objects.
Location: /pub/Arjuna/Theses/TR-376-9-91_EuropeA4.tar.Z
/pub/Arjuna/Theses/TR-376-9-91_USLetter.tar.Z
---------------------------------------------------------------------
Selective Transparency in Distributed Transaction Processing
Daniel L. McCue
Abstract
Object-oriented programming languages provide a powerful interface for
programmers to access the mechanisms necessary for reliable distributed
computing. Using inheritance and polymorphism provided by the object
model, it is possible to develop a hierarchy of classes to capture the
semantics and inter-relationships of various levels of functionality
required for distributed transaction processing.
Using multiple inheritance, application developers can selectively
apply transaction properties to suit the requirements of the
application objects.
In addition to the specific problems of (distributed) transaction
processing in an environment of persistent objects, there is a need for
a unified framework, or architecture in which to place this system. To
be truly effective, not only the transaction manager, but the entire
transaction support environment must be described, designed and
implemented in terms of objects.
This thesis presents an architecture for reliable distributed
processing in which the management of persistence, provision of
transaction properties (e.g., concurrency control), and organisation of
support services (e.g., RPC) are all gathered into a unified design
based on the object model.
Location: /pub/Arjuna/Theses/TR-390-8-92_EuropeA4.tar.Z
/pub/Arjuna/Theses/TR-390-8-92_USLetter.tar.Z